// 牧师约翰最忙碌的一天.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>


using  namespace std;


/*


https://www.acwing.com/problem/content/373/
牧师约翰在 9 月 1 日这天非常的忙碌。

有 N 对情侣在这天准备结婚，每对情侣都预先计划好了婚礼举办的时间，其中第 i 对情侣的婚礼从时刻 Si 开始，到时刻 Ti 结束。

婚礼有一个必须的仪式：站在牧师面前聆听上帝的祝福。

这个仪式要么在婚礼开始时举行，要么在结束时举行。

第 i 对情侣需要 Di 分钟完成这个仪式，即必须选择 Si∼Si+Di 或 Ti−Di∼Ti 两个时间段之一。

牧师想知道他能否满足每场婚礼的要求，即给每对情侣安排Si∼Si+Di 或 Ti−Di∼Ti，使得这些仪式的时间段不重叠。

若能满足，还需要帮牧师求出任意一种具体方案。

注意，约翰不能同时主持两场婚礼，且 所有婚礼的仪式均发生在 9 月 1 日当天。

如果一场仪式的结束时间与另一场仪式的开始时间相同，则不算重叠。

例如：一场仪式安排在 08:00∼09:00，另一场仪式安排在 09:00∼10:00，则不认为两场仪式出现重叠。

输入格式
第一行包含整数 N。

接下来 N 行，每行包含 Si,Ti,Di，其中 Si 和 Ti 是 hh:mm 形式。

输出格式
第一行输出能否满足，能则输出 YES，否则输出 NO。

接下来 N 行，每行给出一个具体时间段安排。

数据范围
1≤N≤1000
输入样例：
2
08:00 09:00 30
08:15 09:00 20
输出样例：
YES
08:00 08:30
08:40 09:00
*/

/*
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

const int N = 2010, M = 4000010;

int n;
int h[N], e[M], ne[M], idx;
int dfn[N], low[N], ts, stk[N], top;
int id[N], cnt;
bool ins[N];

struct Wedding
{
	int s, t, d;
}w[N];

bool is_overlap(int a, int b, int c, int d)
{
	return d > a && b > c;
}

void add(int a, int b)
{
	e[idx] = b, ne[idx] = h[a], h[a] = idx ++ ;
}

void tarjan(int u)
{
	dfn[u] = low[u] = ++ ts;
	stk[ ++ top] = u, ins[u] = true;
	for (int i = h[u]; ~i; i = ne[i])
	{
		int j = e[i];
		if (!dfn[j])
		{
			tarjan(j);
			low[u] = min(low[u], low[j]);
		} else if (ins[j]) low[u] = min(low[u], dfn[j]);
	}
	if (dfn[u] == low[u])
	{
		int y;
		cnt ++ ;
		do
		{
			y = stk[top -- ], ins[y] = false, id[y] = cnt;
		}while (y != u);
	}
}

int main()
{
	scanf("%d", &n);
	memset(h, -1, sizeof h);
	for (int i = 0; i < n; i ++ )
	{
		int s0, s1, t0, t1, d;
		scanf("%d:%d %d:%d %d", &s0, &s1, &t0, &t1, &d);
		w[i] = {s0 * 60 + s1, t0 * 60 + t1, d};
	}

	for (int i = 0; i < n; i ++ )
		for (int j = 0; j < i; j ++ )
		{
			auto a = w[i], b = w[j];
			if (is_overlap(a.s, a.s + a.d, b.s, b.s + b.d)) add(i, j + n), add(j, i + n);
			if (is_overlap(a.s, a.s + a.d, b.t - b.d, b.t)) add(i, j), add(j + n, i + n);
			if (is_overlap(a.t - a.d, a.t, b.s, b.s + b.d)) add(i + n, j + n), add(j, i);
			if (is_overlap(a.t - a.d, a.t, b.t - b.d, b.t)) add(i + n, j), add(j + n, i);
		}

	for (int i = 0; i < n * 2; i ++ )
		if (!dfn[i])
			tarjan(i);

	for (int i = 0; i < n; i ++ )
		if (id[i] == id[i + n])
		{
			puts("NO");
			return 0;
		}

	puts("YES");
	for (int i = 0; i < n; i ++ )
	{
		auto a = w[i];
		int s = a.s, t = a.t, d = a.d;
		if (id[i] < id[i + n])
			printf("%02d:%02d %02d:%02d\n", s / 60, s % 60, (s + d) / 60, (s + d) % 60);
		else
			printf("%02d:%02d %02d:%02d\n", (t - d) / 60, (t - d) % 60, t / 60, t % 60);
	}

	return 0;
}

*/
int main()
{
    std::cout << "Hello World!\n";
}

 